import SwiftUI
import UIKit
import Kingfisher
import ColorThiefSwift

struct VideoPicView: View {
    var proxy:GeometryProxy
    @Binding var isVideoReady: Bool  // 通过 Binding 传递 isVideoReady
    @Binding var item: MainPica  // 通过 Binding 传递 isVideoReady
    @Binding var speaker: Bool
    @Binding  var scrollOffset: CGFloat
    @Binding  var posterScale: CGFloat
    @Binding var isImageVisible: Bool
    @Binding var isVideoStarted: Bool
    @Binding var isVideoPlaying: Bool
    @Binding var dominantColor: Color   // 初始值，后面会更新
    @StateObject private var detailPlaybackManager = DetailPlaybackManager.shared
    
    
    var body: some View {
        VStack {
            // 图片或视频切换
            if isVideoReady && item.type != 3 {
                // 播放视频
                // 使用 DetailView 专用播放器
                DetailVideoPlayer(
                    videoURL: item.url,
                    videoId: String(item.id),
                    isMuted: !speaker,  // 根据 speaker 状态决定是否静音
                    shouldFillScreen: false,  // 不使用铺满模式
                    videoType: 1  // 视频类型为0，使用默认模式
                )
                .scaledToFill()
                .frame(width: UIScreen.main.bounds.width, height: 600)
                .clipped()
                .offset(y: -scrollOffset > 0 ? scrollOffset : 0)
                .scaleEffect(posterScale)
                .opacity(isImageVisible ? 0 : 1)  // 让视频淡入
                .onAppear {
                    startVideo()
                }
                .onDisappear {
                    stopVideo()
                }
                .ignoresSafeArea()
                .transition(.opacity)  // 渐变过渡
            } else {
                // 显示图片
                CachedImageView2(imageURL: item.cover,dominantColor:$dominantColor)
                    .scaledToFill()
                    .frame(width: UIScreen.main.bounds.width, height: 600)
                    .clipped()
                    .offset(y: -scrollOffset > 0 ? scrollOffset : 0)
                    .scaleEffect(posterScale)
                    .opacity(isImageVisible ? 1 : 0)  // 让图片淡出
                    .transition(.opacity)  // 渐变过渡
                    .onAppear {
                        // 立即开始视频加载和播放
                        if item.type != 3 {
                            isVideoReady = true  // 视频准备好了
                            withAnimation(.easeInOut(duration: 0.5)) {
                                isImageVisible = false  // 图片淡出
                            }
                            
                            // 确保视频开始播放
                            detailPlaybackManager.startPlaying(videoId: String(item.id))
                        }
                    }
            }
            Spacer()
        }
        .onDisappear {
            stopVideo() // 停止视频播放
        }
        .ignoresSafeArea(.all)
    }
    // 开始播放视频并循环
    func startVideo() {
        // 视频自动播放
        isVideoStarted = true  // 标记视频已经开始播放
        isVideoPlaying = true
    }
    
    
    // 停止视频播放
    func stopVideo() {
        isVideoPlaying = false
        // 停止当前视频播放
        detailPlaybackManager.stopPlaying()
    }
    
 
}
